disallow_intree_builds()
# API version - be sure to update utf8proc.h and Makefile, too!
-project (utf8proc VERSION 2.11.0 LANGUAGES C)
+project (utf8proc VERSION 2.11.1 LANGUAGES C)
# This is the ABI version number, which may differ from the
# API version number (defined in utf8proc.h and above).
# Be sure to also update these in Makefile and MANIFEST!
set(SO_MAJOR 3)
set(SO_MINOR 2)
-set(SO_PATCH 0)
+set(SO_PATCH 1)
option(UTF8PROC_INSTALL "Enable installation of utf8proc" On)
option(UTF8PROC_ENABLE_TESTING "Enable testing of utf8proc" Off)
include/utf8proc.h
lib/
lib/libutf8proc.a
-lib/libutf8proc.so -> libutf8proc.so.3.2.0
-lib/libutf8proc.so.2 -> libutf8proc.so.3.2.0
-lib/libutf8proc.so.3.2.0
+lib/libutf8proc.so -> libutf8proc.so.3.2.1
+lib/libutf8proc.so.2 -> libutf8proc.so.3.2.1
+lib/libutf8proc.so.3.2.1
lib/pkgconfig/
lib/pkgconfig/libutf8proc.pc
# Be sure to also update these ABI versions in MANIFEST and CMakeLists.txt!
MAJOR=3
MINOR=2
-PATCH=0
+PATCH=1
# api version (also in utf8proc.h and CMakeLists.txt)
-VERSION=2.11.0
+VERSION=2.11.1
OS := $(shell uname)
ifeq ($(OS),Darwin) # MacOS X
# utf8proc release history #
+## Version 2.11.1 ##
+
+2025-11-04
+
+ - Correct out-of-bounds memory access when calling `utf8proc_map` with both `UTF8PROC_CHARBOUND` and `UTF8PROC_DECOMPOSE` ([#311]).
+
## Version 2.11.0 ##
2025-09-10
utf8proc_map(data, len, &str, UTF8PROC_COMPOSE | UTF8PROC_STRIPMARK);
free(str);
+ utf8proc_map(data, len, &str, UTF8PROC_CHARBOUND | UTF8PROC_DECOMPOSE);
+ free(str);
+
return 0;
-}
\ No newline at end of file
+}
utf8proc_int32_t uc1, uc2;
const utf8proc_property_t *property1, *property2;
uc1 = buffer[pos];
+ if (uc1 < 0) {
+ /* skip grapheme break */
+ pos++;
+ continue;
+ }
uc2 = buffer[pos+1];
+ if (uc2 < 0) {
+ /* cannot recombine; skip grapheme break */
+ pos+=2;
+ continue;
+ }
property1 = unsafe_get_property(uc1);
property2 = unsafe_get_property(uc2);
if (property1->combining_class > property2->combining_class &&
/** The MINOR version number (increased when new functionality is added in a backwards-compatible manner). */
#define UTF8PROC_VERSION_MINOR 11
/** The PATCH version (increased for fixes that do not change the API). */
-#define UTF8PROC_VERSION_PATCH 0
+#define UTF8PROC_VERSION_PATCH 1
/** @} */
#include <stdlib.h>